Qt.include("HttpAccess.js")


//URLのリストを与えるとデリゲートオブジェクトにサムネイル画像のURLを指定してくれる。見つかれば
function getPcitureUrl(urls, object) {
    if(urls === null || object === null){
    }else{
        var url = "";

        for(var i=0; i<urls.length; i++){

            //TwitPic
            url = getTwitPicThumbURL(urls[i]);
            if(url.length > 0)  break;

            //百景
            url = getKeitaiHyakkeiThumbURL(urls[i]);
            if(url.length > 0)  break;

            //hatena foto life
            url = getHatenafotolifeThumbURL(urls[i]);
            if(url.length > 0)  break;

            //TwitVIDEO
            url = getTwitVideoThumbURL(urls[i]);
            if(url.length > 0)  break;

            //NicoVideo
            url = getNicoVideoThumbURL(urls[i], object);
            if(url.length > 0)  break;

            //TweetPhoto
            url = getTweetPhotoThumbURL(urls[i]);
            if(url.length > 0)  break;

            //Img.ly
            url = getImglyThumbURL(urls[i]);
            if(url.length > 0)  break;

            //yfrog
            url = getYFROGThumbURL(urls[i]);
            if(url.length > 0)  break;

            //Plixi
            url = getPlixiThumbURL(urls[i]);
            if(url.length > 0)  break;

            //PicPlz
            url = getPicPlzThumbURL(urls[i], object);
            if(url.length > 0)  break;

            //Lockerz
            url = getLockerzThumbURL(urls[i]);
            if(url.length > 0)  break;

            //Instgram
            url = getInstagramThumbURL(urls[i], object);
            if(url.length > 0)  break;

            // LIGHTBOX
            url = getLightBoxThumbURL(urls[i]);
            if(url.length > 0) break;

        }

        //見つかったら指定する
        if(url.length > 0){
            object.itemPicture = url;
        }
    }

}

//TwitpicのサムネイルURLを取得する
function getTwitPicThumbURL(url){
    var ret = "";

    var URL_BASE = "http://twitpic.com/";
    var URL_MINI = "http://twitpic.com/mini/";
    var URL_THUMB = "http://twitpic.com/thumb/";

    if(url.indexOf(URL_MINI) === 0){
            //変換済み
            ret = url;
    }else if(url.indexOf(URL_THUMB) === 0){
            //変換済み
            ret = url;
    }else if(url.indexOf(URL_BASE) === 0){
            //見つかった
            var pic_id = url.substr(URL_BASE.length);

            ret = URL_BASE + "show/thumb/" + pic_id;
    }
    return ret;
}


/**
 * 携帯百景のサムネイル画像のURLを取得する
 * @param url
 * @return
 */
function getKeitaiHyakkeiThumbURL(url){
    var ret = "";

    var URL_HYAKKEI = "http://movapic.com/pic/";
    var URL_HYAKKEI_MINI = "http://image.movapic.com/pic/";

    if(url.indexOf(URL_HYAKKEI_MINI) === 0){
        //変換済み
        ret = url;
    }else if(url.indexOf(URL_HYAKKEI) === 0){
        //見つかった
        var pict_id = "";
        //画像ID取得
        pict_id = url.substr(URL_HYAKKEI.length);
        //URL作成
        ret = URL_HYAKKEI_MINI + "s_" + pict_id + ".jpeg";
    }

    return ret;
}


/**
 * はてなfotolifeのサムネイル画像を取得する
 * @param url
 * @return
 */
function getHatenafotolifeThumbURL(url){
    var ret = "";

    var URL_FOTOLIFE = "http://f.hatena.ne.jp/";
    var URL_FOTOLIFE_MINI = "http://img.f.hatena.ne.jp/images/fotolife/I/";

    if(url.indexOf(URL_FOTOLIFE_MINI) === 0){
        //変換済み
        ret = url;
    }else if(url.indexOf(URL_FOTOLIFE) === 0){
        //見つかった
        var pict_id = "";
        var pos = 0;

        //前半入れ替え
        ret = url.replace(URL_FOTOLIFE, URL_FOTOLIFE_MINI);
        //日付を抜き出す
        pos = url.lastIndexOf("/");
        pict_id = url.substr(pos, 9);
        //日付を置き換えてフォルダ名にする
        ret = ret.replace(pict_id, pict_id + pict_id);
        //URL作成
        ret += "_120.jpg";
    }
    return ret;
}

/**
 * TwitVideoのURLを取得する
 * @param url
 * @return
 */
function getTwitVideoThumbURL(url){
    var ret = "";

    var URL_TWITVIDEO = "http://twitvideo.jp/";
    var URL_TWITVIDEO_MINI = "http://twitvideo.jp/img/thumb/";

    if(url.indexOf(URL_TWITVIDEO_MINI) === 0){
        //変換済み
        ret = url;
    }else if(url.indexOf(URL_TWITVIDEO) === 0){
        //置き換えて完成
        ret = url.replace(URL_TWITVIDEO, URL_TWITVIDEO_MINI);
    }
    return ret;
}


/**
 * ニコ動のサムネイル取得
 * @param url
 * @return
 */
function getNicoVideoThumbURL(url, object){
    var ret = "";

    var URL_NICOVIDEO = "http://www.nicovideo.jp/watch/";
    var URL_NICOVIDEO_SHORT = "http://nico.ms/";
    var URL_NICOVIDEO_API = "http://ext.nicovideo.jp/api/getthumbinfo/";

    var api_url = "";

    if(url.indexOf(URL_NICOVIDEO) == 0){
            //通常が見つかった
            api_url = URL_NICOVIDEO_API + url.replace(URL_NICOVIDEO, "");
    }else if(url.indexOf(URL_NICOVIDEO_SHORT) == 0){
            //短縮が見つかった
            api_url = URL_NICOVIDEO_API + url.replace(URL_NICOVIDEO_SHORT, "");
    }else{
            api_url = "";
    }

    if(api_url.length === 0){
            //ない
    }else{
        ret = "../images/spinner.png"

        //API発行
        requestHttpEx('', 'GET', api_url, true, responseGetNicoVideoThumbURL, object);
//            try{
//                    //APIを発行する
//                    var recv = http2str(api_url);

//                    //結果の解析
//                    XmlPullParser parser = Xml.newPullParser();
//                    parser.setInput(new StringReader(recv));
//                    int eventType = parser.getEventType();
//                    boolean isFinished = false;

//                    while (eventType != XmlPullParser.END_DOCUMENT && !isFinished) {
//                            var name = null;
//                            switch (eventType) {
//                            case XmlPullParser.START_DOCUMENT:
//                                    //ドキュメントの最初
//                                    break;
//                            case XmlPullParser.START_TAG:
//                                    name = parser.getName();
//                                    if(name.equalsIgnoreCase("thumbnail_url")){
//                                            //URL情報を見つけた
//                                            ret = parser.nextText();
//                                    }break;
//                            case XmlPullParser.END_TAG:
//                                    break;
//                            default:
//                                    break;
//                            }
//                            eventType = parser.next();
//                    }

//            }catch(Exception e){
//                    ret = "";
//            }
    }
    return ret;
}

function responseGetNicoVideoThumbURL(response, object){
    var xml = response.responseText;
    var re = new RegExp("<thumbnail_url>.*</thumbnail_url>", "g");
    var url_tag = xml.match(re);
    if(url_tag === null){
    }else{
        var url = url_tag[0].replace("<thumbnail_url>", "").replace("</thumbnail_url>", "");
        //
        object.itemPicture = url;
    }
}


/**
 * TweetPhotoのサムネイル画像を取得する
 * @param url
 * @return
 */
function getTweetPhotoThumbURL(url){
    var ret = "";

    var URL_TWEETPHOTO = "http://tweetphoto.com/";
    var URL_TWEETPHOTO_MINI = "http://TweetPhotoAPI.com/api/TPAPI.svc/imagefromurl?size=thumbnail&url=";

    if(url.indexOf(URL_TWEETPHOTO) == 0){
        //見つかった
        ret = URL_TWEETPHOTO_MINI + url;
    }

    return ret;
}

/**
 * Img.lyのサムネイル画像取得
 * @param string
 * @return
 */
function getImglyThumbURL(url){
    var ret = "";

    var URL_IMGLY = "http://img.ly/";
    var URL_IMGLY_MINI = "http://img.ly/show/thumb/";

    if(url.indexOf(URL_IMGLY_MINI) == 0){
        //変換済み
        ret = url;
    }else if(url.indexOf(URL_IMGLY) == 0){
        //見つかった
        ret = url.replace(URL_IMGLY, URL_IMGLY_MINI);
    }

    return ret;
}

/**
 * yfrogのサムネイル画像を取得する
 * @param string
 * @return
 */
function getYFROGThumbURL(url){
    var ret = "";

    var URL_YFROG = "http://yfrog.com/";
    var URL_YFROG_MINI = ".th.jpg";

    if(url.indexOf(URL_YFROG_MINI) > 0 ){
        //変換済み
        ret = url;
    }else if(url.indexOf(URL_YFROG) == 0){
        //見つかった

        //置き換えて完成
        ret = url + URL_YFROG_MINI;
    }

    return ret;
}

/**
 * plixiのサムネイル画像を取得
 * @param url
 * @return
 */
function getPlixiThumbURL(url){
    var ret = "";

    var URL_PLIXI = "http://api.plixi.com/api/tpapi.svc/imagefromurl";
    var URL_PLIXI_COMMAND = "?size=thumbnail&url=";
    var URL_PLIXI_MINI = "http://plixi.com/p/";

    if(url.indexOf(URL_PLIXI) > 0){
        //変換積み
        ret = url;
    }else if(url.indexOf(URL_PLIXI_MINI) == 0){
        //見つかった
        ret = URL_PLIXI + URL_PLIXI_COMMAND + url;
    }else{
    }
    return ret;
}

/**
 * picplzのサムネイル画像を取得
 * @param url
 * @return
 */
function getPicPlzThumbURL(url, object){
    var ret = "";

    var URL_PICPLZ = "http://picplz.com/";

    if(url.indexOf(URL_PICPLZ) !== 0){
    }else{
        //通常が見つかった
        ret = "../images/spinner.png"

        //API発行
        requestHttpEx('', 'GET', url, true, responseGetPicPlzThumbURL, object);
    }

    return ret;
}
function responseGetPicPlzThumbURL(response, object){
    //JSONの中から無理やり目的のURLを取得する
    var URL_MATCH = "(http://|https://){1}[\\w\\.\\-/:\\#\\?\\=\\&\\;\\%\\~\\+a-zA-Z0-9_]+\\.jpg";//"http://.*\\.jpg";
    var IMAGE_SIZE1 = "_wmeg";
    var IMAGE_SIZE2 = "_t100s";//"_400r";
    var html = response.responseText;
    var re = new RegExp(URL_MATCH, "g");
    var url_tag = html.match(re);
    if(url_tag === null){
    }else{
        for(var i=0; i<url_tag.length; i++){
            if(url_tag[i].indexOf(IMAGE_SIZE1) > 0){
                object.itemPicture = url_tag[i].replace(IMAGE_SIZE1, IMAGE_SIZE2);
                break;
            }
        }
    }
}



/**
 * LOckerzのサムネイル画像を取得
 * @param url
 * @return
 */
function getLockerzThumbURL(url){
    var ret = "";

    var URL_LOCKERZ = "http://api.plixi.com/api/tpapi.svc/imagefromurl";
    var URL_LOCKERZ_COMMAND = "?size=small&url=";
    var URL_LOCKERZ_MINI = "http://lockerz.com/";

    if(url.indexOf(URL_LOCKERZ) > 0){
        //変換積み
        ret = url;
    }else if(url.indexOf(URL_LOCKERZ_MINI) === 0){
        //見つかった
        ret = URL_LOCKERZ + URL_LOCKERZ_COMMAND + url;
    }else{
    }
    return ret;
}

/**
 * instagramのサムネイル画像のURLを取得する
 * @param url
 * @return
 */
function getInstagramThumbURL(url, object){
    var ret = "";

    var URL_INSTGRAM = "http://instagr.am/p/";
    var URL_INSTGRAM_API = "http://api.instagram.com/oembed?maxwidth=300&url=";
//    var URL_INSTGRAM_API = "http://api.instagram.com/oembed?url=%s&maxwidth=300";

    var api_url = "";

    if(url.indexOf(URL_INSTGRAM) !== 0){
    }else{
        console.debug("instagram=" + url);

        //通常が見つかった
        ret = "../images/spinner.png"

        api_url = URL_INSTGRAM_API + url;

        //API発行
        requestHttpEx('', 'GET', api_url, true, responseGetInstagramThumbURL, object);
    }

    return ret;
}
function responseGetInstagramThumbURL(response, object){
    var json_obj = eval("(" + response.responseText + ")");
//    console.debug(response.responseText);
    if(json_obj === null || json_obj === undefined){
    }else{
        object.itemPicture = json_obj.url;
    }
}


/**
 * LIGHTBOXのサムネイル画像を取得
 * @param url
 * @return
 */
function getLightBoxThumbURL(url){
    var ret = "";

    var URL_LIGHTBOX = "http://lightbox.com/show/thumb/";
    var URL_LIGHTBOX_MINI = "http://lightbox.com/";

    if(url.indexOf(URL_LIGHTBOX) > 0){
        //変換積み
        ret = url;
    }else if(url.indexOf(URL_LIGHTBOX_MINI) === 0){
        //見つかった
        ret = url.replace(URL_LIGHTBOX_MINI, URL_LIGHTBOX);
    }else{
    }
    return ret;
}
